This invention is a circuit for the high speed generation and comparison of Hamming codes for error detection and correction of binary data read onto and subsequently read from a disk or other magnetic media.
During the process of transmitting binary data or transforming binary data from one medium to another, bits may be lost. A typical example would be where data is temporarily on a disk. During the read and write processes the read/record head must be kept at a precise height from the recording medium. A particle of dust or a scratch on the disk surface will interfere with this spacing and result in a loss of information. On magnetic tape it is common for there to be local defective areas of the magnetic surface coating which results in the dropping of data bits.
Various means for detecting errors have been used. One method is to count the number of "one" bits that are loaded onto a magnetic medium in each record or segment, and to store that count modulo some number on the medium immediately after the data field. Subsequently, when the data is read from the magnetic medium, the data bits are again counted. A comparison of the first and second counts will usually detect whether any bits were lost or changed. However, no correction of the data is possible.
Hamming codes have the advantage of being able to detect two errors in a data field, and also to correct a one bit error. When Hamming codes are used in conjunction with other codes (parity checks, check sums, etc.) the detection of any number of error bits, or the corrosion of one error bit per record is obtainable.
There are, however, two disadvantages associated with Hamming codes. The first is that while a one bit error is correctable, errors typically occur in bursts. This is because the physical size of a bit on the disk is small compared to the size of the dust particle, scratch, etc. The result is that errors usually occur in bursts of from several to, perhaps, eleven bits in length. The second disadvantage is that the generation of codes during the write phase, the comparison of codes during the read phase and the correction of data are all complex processes which require significant overhead, reducing the system bandwidth.
What is required by the industry is a coding process that will correct error bursts at high data rates while requiring a minimum amount of computer supervision.